草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 如何正确使用malloc和free memory?

我想知道使用malloc和free的正确/标准方法是什么。free后是否需要设置指针为NULL?基本上,以下两种方式中哪一种是正确的?double*myPtr=(double*)malloc(sizeof(double)*5);.....free(myPtr);或double*myPtr=(double*)malloc(sizeof(double)*5);.....free(myPtr);myPtr=NULL;或者应该是其他方式使用malloc和free?谢谢。 最佳答案 两者都很好。唯一的区别是,如果您第二次尝试释放myPtr,前

c++ - 开发嵌入式软件库,C 还是 C++?

我正在开发一个软件库,用于嵌入式系统,如ARM芯片或TIDSP(主要用于嵌入式系统,但如果它也可以用于PC环境,那也很好).显然,这是一个相当广泛的目标系统,因此能够轻松地移植到不同的系统是一个优先事项。该库将用于与特定硬件的接口(interface)和运行一些算法。我认为C++是优于C的最佳选择,因为它更易于维护和阅读。我认为额外的开销对于能够在面向对象的范例中工作是值得的。如果我正在为一个非常具体的系统编写代码,我会使用C语言,但事实并非如此。我假设目前流行的嵌入式系统的大多数编译器都可以处理C++。这个对吗?我还应该考虑其他因素吗?我的思路正确吗? 最

c++ - 仅对 STL 容器使用 C++ 是一种不好的做法吗?

首先介绍一下背景......在下文中,我使用C、C++和Java编写(通用)算法,而不是带有界面的gui和花哨的程序,而是简单的命令行算法和库。我开始学习Java编程。我对Java非常满意,并且我学会了如何使用Java容器,因为它们往往会降低簿记的复杂性,同时保证出色的性能。我断断续续地用过C++,但我用它肯定不如用Java,而且感觉很麻烦。我对C++的了解还不足以在不查找每个函数的情况下使用它,所以我很快又回到了尽可能多地坚持使用Java。然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我过于关注一种太高级的语言,我需要更多关于CPU如何与内存交互以及真正发生的事情的经验与1和0。

c++ - 为什么在C/C++中使用uint_8等?

我看过一些代码,它们不直接使用原始类型int、float、double等。他们通常typedef并使用它或使用类似的东西uint_8等现在真的有必要吗?或者C/C++是否足够标准化,最好直接使用int、float等。 最佳答案 因为char、short、int、long等类型是不明确的:它们依赖于底层硬件。在C基本上被认为是匆忙的人们的汇编语言的日子里,这没关系。现在,为了编写可移植的程序——这意味着“程序在任何机器上都具有相同的意义”——人们构建了特殊的typedefs和#defines库>允许他们做出独立于机器的定义。密码真的很

c++ - Signed Char的目的是什么

如果char和signedchar的范围都是-127-127,那么signedchar的用途是什么?我们在什么地方使用signedchar而不是仅使用char? 最佳答案 unsignedchar是无符号的。signedchar已签名。char可能是未签名的或已签名的,具体取决于您的平台。当您确实需要签名时,请使用signedchar。可能相关:Whatdoesitmeanforachartobesigned? 关于c++-SignedChar的目的是什么,我们在StackOverflo

c++ - SomeClass **ptr; 之间的区别和 SomeClass *ptr;

抱歉,这看起来像是一个菜鸟问题,但对Google来说却是一个真正的痛苦。我正在使用C++,虽然我可以通过指针和引用获得,但有时对我来说仍然很神秘。我有一些代码,类似于SomeClassName**pointer,我想知道为什么有两个星号而不是一个? 最佳答案 用图片来解释要容易得多,但我们还是试一试。如果您已经知道其中的一些内容,我们深表歉意。指针只是一个保存值的变量,就像int或char一样。使它成为指针的原因是该变量中的值是其他地方内存中的地址。示例更简单。假设我们有3个这样声明的变量:intiVar=42;//intint*p

c++ - 为什么我们在从 main() 返回时遵循相反的约定?

我已经经历了this和this,但我在这里要问的问题是,为什么0被认为是Success?我们总是将0与false联系起来,不是吗? 最佳答案 因为失败的案例比成功的案例多。通常,我们成功的原因只有一个(因为我们成功了:)),但失败的原因有很多。所以0表示成功,其他一切都表示失败,并且该值可以用来报告原因。对于代码中的函数,这是不同的,因为您是指定接口(interface)的人,因此如果足够的话,可以只使用bool。对于main,有一个固定的返回接口(interface),可能有程序只报告成功/失败,但其他程序需要更精细的错误报告。为

c++ - 在 C 程序中使用单个 C++ 类的最佳方式

我必须从一个C++类中导入/翻译代码,以便我可以在C程序中使用它。C程序很大,并且对打开和关闭的C库有很多依赖性。C++类.cpp文件是650行我没有混合使用C和C++的经验,所以即使我看过一份关于如何混合使用的指南,我也不确定该走哪条路。我只需要在几个地方使用C++代码(相当独立的使用我正在使用gcc(gcc/g++)是linux环境那么导入它需要做什么?会不会比翻译的时间更少?谢谢,迈克 最佳答案 嗯,650行并不太长-我会重写它。您可能至少会花费同样多的时间来尝试包装它,而且您可能会发现维护结果很困难。

c++ - c/c++中指针的内存开销

我在64位平台上,所以所有内存地址都是8个字节。因此,为了估计一个数组的内存使用情况,我应该为数组中的每个条目向sizeof(DATATYPE)添加8个字节。例子:shortunsignedint*ary=newshortunsignedint[1000000];//length1mio//sizeof(shortunsingedint)=2bytes//sizeof(shortunsingedint*)=8bytes那么每个条目占用10bytes吗?因此,我的1mio长度数组会使用至少10兆字节吗?谢谢 最佳答案 不,您不会获得每

c++ - C中简单表达式的奇怪输出,为什么?

我正在使用TurboC++。我写了下面的表达式,它没有得到正确的评估,我是否遗漏了它背后的一些概念?intc=300*300/300;printf("%d",c);输出是81为什么? 最佳答案 300*300is90000.假设int是16bit,你已经溢出了。溢出环绕,给你:24464。24465/300=81.55不要依赖这个。这是未定义的行为。 关于c++-C中简单表达式的奇怪输出,为什么?,我们在StackOverflow上找到一个类似的问题: htt